
var http = require("http");
var path = require("path");
var url = require("url");
var fs = require("fs");
var fsp = require("fs").promises;

var { createServer } = http;

// 注意:
// node -> http搭建的服务默认是没有站点的概念的 => 需要自己搭建

// 如何搭建站点?  站点 => 用于存放前端代码的文件夹 => 通过访问该服务器的url地址 => 找到对应的文件渲染到浏览器

// 通过前端输入的url地址 => 找到对应的文件 => 读取返回给前端 => 前端渲染到浏览器中即可
// 简单来说 => 前端发送请求(请求方式 请求地址 空行 携带数据) => 后端接收请求(对应请求地址 从站点找到定义文件) => 读取该文件 =>将文件数据作为内容响应

// 指定一个文件夹作为默认站点(site) => 用于存放前端的代码

var siteUrl = path.join(__dirname, "../site"); // 站点默认路径

var server = createServer(function (req, res) { // 每次客户端-> 服务器发送请求都会执行的回调函数
    // req => request => 包含请求相关的信息(对象)
    // req.method => 请求的方式
    // req.url => 请求的url地址
    if (req.url != "/favicon.ico") { // 排除网站图标
        console.log("----------------------前端发送请求过来了------------------");
        // console.log(req.url);
        var obj = url.parse(req.url);
        // console.log(obj);

        var { pathname } = obj; // 获取url中的文件路径
        console.log(pathname);
        // 对应文件路径 从站点中请求对应的文件返还给前端 /html/index.html

        var defaultEncode = "utf-8"; // 默认编码格式utf-8

        var ext = path.extname(pathname); //获取文件后缀 (.html .css .js .jpg)
        var picReg = /(.jpg|.png|.gif|.jpeg|.webp)$/i;

        if (picReg.test(ext)) {
            defaultEncode = "binary"; // 图片是以binary格式存在的
        }

        // 图片格式是二进制 binary => 可能会有问题 
        fsp.readFile(path.join(siteUrl, pathname), defaultEncode).then(data => {
            // console.log(data);
            // res.writeHead(200, {
            //     "Content-Type": "text/plain;charset=utf-8",
            // })
            res.end(data, defaultEncode);
        }).catch(err => {
            throw err;
        })




    }

})

server.listen(5000, function () {
    console.log("server is started at: localhost:5000");
})